Code/Syntax : File.rmd
Kelompok 4 Pararel 2
| Nama | NIM |
|---|---|
| Angga Fathan Rofiqy | G1401211006 |
| Gladys Adya Zafira | G1401211014 |
| Kheni Hikmah Lestari | G1401211029 |
Bagian A
Poin 1
Bangkitkan sebaran Normal, Seragam, dan Eksponensial dengan ukuran contoh 2, 5, 25
Berikut merupakan hasil pembangkitan masing-masing serbaran dengan ukuran contoh 2, 5, 25:
Normal
set.seed(361)
sample_size <- c(2, 5, 25)
norm_samples <- lapply(sample_size, function(n) rnorm(n))
print(norm_samples)
## [[1]]
## [1] 0.3615598 0.7018046
##
## [[2]]
## [1] -0.52680508 0.07266901 0.05243838 -1.15092763 1.09613386
##
## [[3]]
## [1] -0.06223967 0.33424346 1.14872339 -0.58187795 -0.74961697 0.91041084
## [7] 1.11742996 -0.41882087 -0.90762722 1.97003011 -1.90834373 0.54295418
## [13] -0.34584438 0.64434620 -0.19872338 1.15407082 1.45305346 -2.08842349
## [19] 0.45829855 -0.36677537 -1.18484629 -0.30731180 1.59718792 -0.05882862
## [25] 1.42134857
Sebaran Normal dengan ukuran contoh (n) 2, 5, 25
Seragam
set.seed(361)
unif_samples <- lapply(sample_size, function(n) runif(n))
print(unif_samples)
## [[1]]
## [1] 0.6411595 0.4234989
##
## [[2]]
## [1] 0.7585995 0.5017770 0.2991645 0.6694086 0.5289652
##
## [[3]]
## [1] 0.64223494 0.52091031 0.35643748 0.12488101 0.73423608 0.86348990
## [7] 0.69046701 0.47518599 0.59805178 0.63090208 0.04110236 0.87466497
## [13] 0.17958752 0.28032445 0.46865077 0.22674271 0.80925265 0.81869706
## [19] 0.13681490 0.86809473 0.91256821 0.33767353 0.65252263 0.18203760
## [25] 0.78822457
Sebaran Seragam dengan ukuran contoh (n) 2, 5, 25
Eksponensial
set.seed(361)
exp_samples <- lapply(sample_size, function(n) rexp(n))
print(exp_samples)
## [[1]]
## [1] 0.282319 1.040952
##
## [[2]]
## [1] 0.88980511 0.33881711 0.05793049 0.28446987 0.04182061
##
## [[3]]
## [1] 1.118897096 2.408815370 0.196103564 0.261804162 3.087864362 0.124480583
## [7] 0.850313252 0.637394117 1.480813568 0.234057453 0.305045266 1.842595186
## [13] 0.576449139 0.008035913 0.412838649 0.311016965 1.152066513 0.291981015
## [19] 0.062473743 0.184011496 2.830951527 3.642044907 1.189495783 0.353262031
## [25] 0.247379575
Sebaran Eksponensial dengan ukuran contoh (n) 2, 5, 25
Poin 2
Buat histogram dari rataan contohnya
# Menghitung rata-rata dari masing-masing sampel
norm_means <- sapply(norm_samples, mean)
unif_means <- sapply(unif_samples, mean)
exp_means <- sapply(exp_samples, mean)
Rata-rata contoh masing-masing sebaran:
Normal
print(norm_means)
## [1] 0.53168218 -0.09129829 0.14291271
Seragam
print(unif_means)
## [1] 0.5323292 0.5515829 0.5285502
Eksponensial
print(exp_means)
## [1] 0.6616357 0.3225686 0.9524076
Histogram dari rata-rata contoh
par(mfrow = c(1, 3))
hist(norm_means, main = "Histogram Mean Normal",
xlab = "Rata-rata", ylab = "Frekuensi", col = "#8DC16D")
hist(unif_means, main = "Histogram Mean Seragam",
xlab = "Rata-rata", ylab = "Frekuensi", col = "#4493CA")
hist(exp_means, main = "Histogram Mean Exponensial",
xlab = "Rata-rata", ylab = "Frekuensi", col = "#D44155")
Poin 3
Buat normal qq-plot dari masing-masing n
par(mfrow = c(1, 3))
qqnorm(norm_means, main = "Normal QQ Plot", col = "#8DC16D", lwd = 7,
xlab = "Theoretical Quantiles", ylab = "Sample Quantiles")
qqline(norm_means, col = "red", lwd=2)
qqnorm(unif_means, main = "Uniform QQ Plot", col = "#4493CA", lwd = 7,
xlab = "Theoretical Quantiles", ylab = "Sample Quantiles")
qqline(unif_means, col = "red", lwd=2)
qqnorm(exp_means, main = "Exponensial QQ Plot", col = "#D44155", lwd = 7,
xlab = "Theoretical Quantiles", ylab = "Sample Quantiles")
qqline(exp_means, col = "red", lwd=2)
Bagian B
Poin 1
Bangkitkan dua gugus data
Data dari sebaran Normal
Data campuran:
50% dari sebaran normal + 50% dari sebaran chi-square
50% sebaran chi-square dengan paramenter a + 50% sebaran chi-square dengan paramenter b
25% sebaran chi-square dengan parameter a + 25% sebaran chi-suqare dengan parameter b + 25% sebaran normal dengan paramater a + 25% sebaran normal parameter b
Normal
set.seed(361)
norm_data <- rnorm(1000, mean = 0, sd = 1)
hist(norm_data, main = "Histogram Normal",
xlab = "Nilai", ylab = "Frekuensi", col = "#4664AF")
Campuran 1
50% dari sebaran normal + 50% dari sebaran chi-square
set.seed(361)
csq_data <- rchisq(1000, df = 1)
mixed_data_1 <- c(norm_data[1:500], csq_data[1:500])
hist(mixed_data_1, main = "Histogram Campuran 1",
xlab = "Nilai", ylab = "Frekuensi", col = "#9F4274")
Campuran 2
50% sebaran chi-square dengan paramenter a + 50% sebaran chi-square dengan paramenter b
set.seed(361)
csq_data_a <- rchisq(500, df = 1)
csq_data_b <- rchisq(500, df = 2)
mixed_data_2 <- c(csq_data_a, csq_data_b)
hist(mixed_data_2, main = "Histogram Campuran 2",
xlab = "Nilai", ylab = "Frekuensi", col = "#66C8CC")
Campuran 3
25% sebaran chi-square dengan parameter a + 25% sebaran chi-suqare dengan parameter b + 25% sebaran normal dengan paramater a + 25% sebaran normal parameter b
set.seed(361)
norm_data_a <- rnorm(250, mean = 0, sd = 1)
norm_data_b <- rnorm(250, mean = 1, sd = 1)
mixed_data_3 <- c(csq_data_a, csq_data_b, norm_data_a, norm_data_b)
hist(mixed_data_3, main = "Histogram Campuran 3",
xlab = "Nilai", ylab = "Frekuensi", col = "#F8D054")
Poin 2
- Ambil sample dengan ukuran n = 4, 12, 20, 60, 100
- Buat histogram dan normal qq-plot
- Pada n berapa sebaran rataan dari masing-masing data mulai simeteris atau mendekati sebaran normal?
sample_sizes <- c(4, 12, 20, 60, 100)
plot_distribution <- function(data, title, color) {
df <- data.frame(x = data)
# Histogram
p1 <- ggplot(data = df, aes(x = x)) +
geom_histogram(bins = 20, fill = color, alpha = 1) +
geom_density(aes(y = after_stat(count)), fill = color, alpha = 0.4) +
labs(title = paste0("\n\n",title)) +
theme_minimal() +
theme(
plot.title = element_text(size = 22, face = "bold", hjust = 3)
)
# QQ plot
p2 <- ggplot(data = df, aes(sample = x)) +
stat_qq(color = color, size =5) +
stat_qq_line(color = "red", linewidth =2) +
labs(title = paste0("\n\n\n\n")) +
theme_minimal()
return(list(p1, p2))
}
all_plots <- list()
for (size in sample_sizes) {
samples <- list(
"Mixed Data 1" = mixed_data_1,
"Mixed Data 2" = mixed_data_2,
"Mixed Data 3" = mixed_data_3
)
plots_for_size <- list()
colors <- c("#4664AF", "#9F4274", "#66C8CC")
for (i in 1:length(samples)) {
title <- names(samples)[i]
sample <- sample(samples[[title]], size, replace = FALSE)
plots <- plot_distribution(sample, paste0(title, " (n=", size,")"), colors[i])
plots_for_size <- c(plots_for_size, plots)
}
all_plots <- c(all_plots, plots_for_size)
}
plot_grid(plotlist = all_plots, ncol = 6)
Dalam analisis ini, tiga jenis data campuran dieksplorasi dengan variasi ukuran sampel (n = 4, 12, 20, 60, 100), menghasilkan total 15 histogram dan 15 QQ plot. Melalui observasi visual ini, ditemukan bahwa titik di mana distribusi mulai menyerupai distribusi normal adalah ketika ukuran sampel melebihi 20, dengan pengecualian pada jenis data campuran kedua. Temuan ini secara substansial mendukung teori statistik yang dikenal sebagai teorema limit pusat. Teorema ini menyatakan bahwa, “dengan pertambahan ukuran sampel, distribusi rata-rata dari sampel yang diambil dari populasi, terlepas dari distribusi aslinya, akan cenderung mendekati distribusi normal”. Dalam literatur statistik, penekanan sering diberikan pada ukuran sampel yang besar, umumnya lebih dari 20, sebagai titik di mana pendekatan ke distribusi normal menjadi semakin akurat.